home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 46
/
Aminet 46 (2001)(GTI - Schatztruhe)[!][Dec 2001].iso
/
Aminet
/
text
/
edit
/
edt10src.lha
/
txt
/
RxTexts.mod
< prev
next >
Wrap
Text File
|
1995-04-09
|
5KB
|
237 lines
(*
.name RxTexts
.task arexx texts commands
.release 1.0
.language Oberon-2
.translator Amiga Oberon 3.2
.system req. AmigaOS 2.04 or higher
.author Joachim Barheine
.address Hochgrevestr. 3, 38640 Goslar
.copyright (c) 1995 by J.Barheine
*)
(* .info: 31/03/95, 17:23:54, version 2 *)
MODULE RxTexts;
IMPORT
ASCII,
F:= Files,
IO:= IOServer,
L:= UntracedLists,
P:= EPrint,
Prj:= EProject,
Req:= ERequests,
Rx:= ERexx,
RxRequests,
Str:= StrPool,
T:= ETexts,
W:= Windows;
PROCEDURE FirstText* (VAR w: W.Window);
BEGIN
w:= IO.WindowFromText(IO.texts.head(IO.Text))(W.Window);
END FirstText;
PROCEDURE ForceAutosave*;
BEGIN
IO.Autosave;
END ForceAutosave;
PROCEDURE InsertFile* (w: W.Window);
VAR
filename: ARRAY F.filenameLen OF CHAR;
name: ARRAY F.nameLen OF CHAR;
done: BOOLEAN;
BEGIN
IO.Busy(w.text, Str.inserting^);
F.GetFilename(filename, w.text(T.Text).path, ""); (* current directory *)
done:= Rx.GetStrLast(filename) OR Req.ReqFile(w.win, filename, FALSE);
IF done THEN
F.GetName(name, filename);
w.DisplayOff;
REPEAT
done:= w.text(T.Text).InsertText(w.pos, filename);
UNTIL done OR ~Prj.ReqInsertErr(w, name);
w.DisplayOn;
END;
IO.BusyDone(w.text);
Rx.SetBoolResult(done);
END InsertFile;
PROCEDURE LastText* (VAR w: W.Window);
BEGIN
w:= IO.WindowFromText(IO.texts.tail(IO.Text))(W.Window);
END LastText;
PROCEDURE NextText* (VAR w: W.Window);
VAR
res: BOOLEAN;
BEGIN
res:= TRUE;
IF w.text.next # NIL THEN
w:= IO.WindowFromText(w.text.next(IO.Text))(W.Window);
ELSIF Rx.Match("CYCLE") THEN
FirstText(w);
ELSE
res:= FALSE;
END;
Rx.SetBoolResult(res);
END NextText;
PROCEDURE Open* (w: W.Window; new: T.Text): BOOLEAN;
VAR
filename: ARRAY F.filenameLen OF CHAR;
name: ARRAY F.nameLen OF CHAR;
done: BOOLEAN;
BEGIN
done:= FALSE;
w.Busy(Str.opening^);
w.UnMark; (* forget marks *)
IF ~w.text(T.Text).new THEN
F.GetFilename(filename, w.text(T.Text).path, "")
ELSE
filename:= "";
END;
IF Rx.GetStrLast(filename) OR Req.ReqFile(w.win, filename, FALSE) THEN
done:= TRUE;
F.GetName(name, filename);
LOOP
IF new.Open(filename) THEN
IF (w.text(T.Text).useCount = 1) & (w.text(T.Text).changes # 0) THEN
CASE Prj.ReqSave(w) OF
0: new.Dispose; (* cancel *)
done:= FALSE;
| 1: Prj.Save(w); (* save *)
w.NewText(new);
| 2: Prj.SaveAs(w); (* save as *)
w.NewText(new);
| 3: w.NewText(new); (* no *)
END;
ELSE
w.NewText(new);
END;
EXIT;
ELSIF ~Prj.ReqOpenErr(w, name) THEN
new.Dispose;
done:= FALSE;
EXIT;
END;
END; (* if open *)
END; (* loop *)
w.BusyDone;
Rx.SetBoolResult(done);
RETURN done;
END Open;
PROCEDURE PrevText* (w: W.Window);
VAR
res: BOOLEAN;
BEGIN
res:= TRUE;
IF w.text.prev # NIL THEN
w:= IO.WindowFromText(w.text.prev(IO.Text))(W.Window);
ELSIF Rx.Match("CYCLE") THEN
LastText(w);
ELSE
res:= FALSE;
END;
Rx.SetBoolResult(res);
END PrevText;
PROCEDURE Print* (w: W.Window);
VAR
doIt: BOOLEAN;
BEGIN
doIt:= RxRequests.ReqPrint(w);
IF doIt THEN
IO.Busy(w.text, Str.printing^);
P.Print(w, 0, w.text(T.Text).len - 1);
IO.BusyDone(w.text);
END;
Rx.SetBoolResult(doIt);
END Print;
PROCEDURE Save* (w: W.Window);
BEGIN
Prj.Save(w);
Rx.SetBoolResult(w.text(T.Text).changes = 0);
END Save;
PROCEDURE^ SetFilename* (w: W.Window);
PROCEDURE SaveAs* (w: W.Window);
BEGIN
IF Rx.More() THEN
SetFilename(w);
Prj.Save(w);
ELSE
Prj.SaveAs(w);
END;
Rx.SetBoolResult(w.text(T.Text).changes = 0);
END SaveAs;
PROCEDURE SaveTemp* (w: W.Window);
VAR
f: F.File;
filename: ARRAY 256 OF CHAR;
done: BOOLEAN;
BEGIN
done:= Rx.GetStrLastErr(filename) & f.Open(filename, TRUE);
IF done THEN
done:= w.text(T.Text).StoreTemp(f);
f.Close;
END;
Rx.SetBoolResult(done);
END SaveTemp;
PROCEDURE SelectText* (VAR w: W.Window);
VAR
id: LONGINT;
n: L.NodePtr;
BEGIN
IF Rx.GetNumErr(id) THEN
n:= IO.GetText(SHORT(id));
IF n # NIL THEN
w:= n(W.Window);
ELSE
Rx.ErrorMsg(Str.unknownTextID^);
END;
END;
END SelectText;
PROCEDURE SetFilename* (w: W.Window);
VAR
filename: ARRAY F.filenameLen OF CHAR;
path: ARRAY F.pathLen OF CHAR;
name: ARRAY F.nameLen OF CHAR;
BEGIN
IF Rx.GetStrLastErr(filename) THEN
F.GetName(name, filename);
F.GetPath(path, filename);
w.text(T.Text).RenameFile(path, name);
END;
END SetFilename;
END RxTexts.